package SecondeStage.Networkprogramming.Socket;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

public class Tcp02Client {
    public static void main(String[] args) throws IOException {
        // 1. 连接服务端(ip,端口)
        // 连接本机的 9999端口，如果连接成功，返回Socket对象
        Socket socket=new Socket(InetAddress.getLocalHost(),9999);
        System.out.println("socket返回="+socket.getClass());
        // 2. 连接上后，生产Socket，通过socket.getOutputStream()得到和socket对象关联的输出流对象
        OutputStream outputStream=socket.getOutputStream();
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
        // 3. 通过输出流，写入数据(字符)到 数据通道
        bufferedWriter.write("hello,server 字符流");
        bufferedWriter.newLine(); // 插入一个换行符，表示写入的内容结束.要求对方使用 readLine()!!!
        bufferedWriter.flush(); // 如果使用字符流，需要手动刷新，否则数据不会写入数据通道
        // 4. 获取和socket相关联的输入流，读取数据(字符)并显示
        InputStream inputStream=socket.getInputStream();
        BufferedReader bufferedReader =new BufferedReader(new InputStreamReader(inputStream));
        String s=bufferedReader.readLine();
        System.out.println(s);
        // 5.. 关闭流对象和socket
        bufferedWriter.close();
        bufferedReader.close();
        socket.close();
        System.out.println("客户端退出.......");
    }
}
